/*
 * $Id: Lttp.h,v 1.1 2005-09-07 03:20:25 bacon Exp $
 */

#ifndef _XPP_NET_LTTP_H_
#define _XPP_NET_LTTP_H_

#include <xpp/net/SttpBase.h>
#include <xpp/bas/String.h>

// Line-oriented Text Transfer Protocol 

namespace xpp
{
	namespace net
	{

		class Lttp: public SttpBase
		{
		public:
			Lttp (Transmittable* s = NULL, Address* a = NULL): SttpBase (s, a)
			{
				reset ();
			}

			virtual ~Lttp ()
			{
			}

			void reset ()
			{
				SttpBase::reset ();
				max_line_len = 0;

			}

 			xp_size_t maxLineLen () const
 			{
				return max_line_len;
			}

			void setMaxLineLen (xp_size_t v)
			{
				max_line_len = v;
			}

			int receiveLine (xpp::bas::String* line);
			int sendLine (const xp_char_t* line);
			int sendLine (const xp_char_t* line, xp_size_t len);

			enum {
				ERR_TOOLONGLINE = SttpBase::__NERRCODES__,
				__NERRCODES__
			};

			const xp_char_t* errorStr () const;

		protected:
			xp_size_t max_line_len;
		};

	}
}

#endif
